package top.gytf.unifiedcall.jsr269;

import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.TypeElement;
import java.util.Set;

/**
 * 统一调用包处理器，用于编译时生成相关内容
 */
public interface UnifiedCallProcessor {
    /**
     * 执行顺序（升序执行）
     */
    int order();

    /**
     * 处理器支持的注解
     */
    Set<String> getSupportedAnnotationTypes();

    /**
     * 初始化
     */
    void init(ProcessingEnvironment processingEnv);

    /**
     * 处理
     */
    void process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv);
}
